

package com.jysz.certificate.service.generator;

import com.jysz.certificate.persistence.model.system.SequenceNumber.SequenceType;

/**
 * 序列号生成器
 * @author <a href="mailto:javaengine@outlook.com">Kaca Rich</a>
 *
 */
public interface ISeqGenerator {
	/**
	 * 获得下一个序号，调用DefaultGeneratorDelegate直接获得下一序号
	 */
	public abstract String generateNextSeqNumber(final String clazzName);

	/**
	 * 产生下一个序列码
	 *  此方法不需要事物支持.
	 * @param clazzName 类名.
	 * @param type 序号的类型
	 * @param company  当前公司
	 * @param otherFormatObjs 其他的格式化字符串参数
	 * @return 下一个序列码
	 */
	public abstract String generateNextSeqNumber(final String clazzName, SequenceType type,Object ... otherFormatObjs);
	
	/**
	 * 通过给定的代理类，以及当前公司来产生一下一个序列号码.
	 * @param delegate 代理类。
	 * @param company 当前公司对象。
	 * @param otherFormatObjs 其他的格式化字符串参数
	 * @return 序号
	 */
	public abstract String generateNextSeqNumber(IGeneratorDelegate delegate,Object ... otherFormatObjs);
}